package rawwrs.dao.jpa;

import java.util.ArrayList;
import java.util.List;


import javax.persistence.EntityManager;

import rawwrs.bean.PropiedadDTO;
import rawwrs.bean.ProyectoDetalleDTO;
import rawwrs.entity.ProyectoDetalle;
import rawwrs.util.JPAUtilSingleton;

public class ProyectoDetalleJPADAO{

	PropiedadJPADAO servicio_propiedad = new PropiedadJPADAO();

	@SuppressWarnings("unchecked")
	public List<PropiedadDTO> obtenerTodos(String id_proyecto){
		
		EntityManager em = JPAUtilSingleton.
		getInstance().getEmf().createEntityManager();

		List<PropiedadDTO> propiedades = new ArrayList<PropiedadDTO>();		 
		javax.persistence.Query query =  em.createQuery( "SELECT c FROM ProyectoDetalle c ");
		List<ProyectoDetalle> l = query.getResultList();		

		
		for ( int i=0; i < l.size(); i++ ){			
			
			ProyectoDetalle entidadDetalle = (ProyectoDetalle)l.get(i);
	
			ProyectoDetalleDTO dto = new ProyectoDetalleDTO();
			dto.setId(entidadDetalle.getId());
			dto.setId_propiedad(entidadDetalle.getId_propiedad());
			dto.setId_proyecto(entidadDetalle.getId_proyecto());
			
			if(id_proyecto.equals(entidadDetalle.getId_proyecto())){
				PropiedadDTO propi = new PropiedadDTO();
				propi.setId(Integer.parseInt(dto.getId_propiedad()));
				propiedades.add(servicio_propiedad.obtenerPropiedad(propi));
			}
			
		}

		em.close();

		return propiedades;
	}
	
	

	public void insertar(ProyectoDetalleDTO detalles_dto) {
		
			EntityManager em = JPAUtilSingleton.
			getInstance().getEmf().createEntityManager();
			em.getTransaction().begin();			
			
			ProyectoDetalle entidadDetalle=new ProyectoDetalle();	
			entidadDetalle.setId_propiedad(detalles_dto.getId_propiedad());
			entidadDetalle.setId_proyecto(detalles_dto.getId_proyecto());
		    
			em.persist(entidadDetalle);
			
			em.flush();
			
			em.getTransaction().commit();
			
			em.close();
			
			PropiedadDTO propiedad = new PropiedadDTO();
			propiedad.setId(Integer.parseInt(detalles_dto.getId_proyecto()));
			propiedad = servicio_propiedad.obtenerPropiedad(propiedad);			
			servicio_propiedad.cambiar_estado_on(propiedad);
			
			
	}
	
	
  public void eliminar(ProyectoDetalleDTO detalles_dto) {
		EntityManager em = JPAUtilSingleton.
		getInstance().getEmf().createEntityManager();
		em.getTransaction().begin();
		ProyectoDetalle entidadDetalle=(ProyectoDetalle)em.find(ProyectoDetalle.class,detalles_dto.getId());
		em.remove(entidadDetalle);
		em.flush();		
		em.getTransaction().commit();
		em.close();
		
		PropiedadDTO propiedad = new PropiedadDTO();
		propiedad.setId(Integer.parseInt(detalles_dto.getId_proyecto()));
		propiedad = servicio_propiedad.obtenerPropiedad(propiedad);			
		servicio_propiedad.cambiar_estado_off(propiedad);
		
	}

	



}
